//
// Created by 鲲鹏 on 24-6-25.
//

#include "bits/stdc++.h"

using namespace std;

struct ListNode {
    int val;
    ListNode *next;

    ListNode(int x) : val(x), next(NULL) {}
};

bool hasCycle(ListNode *head) {
    //方法一:暴力
//    ListNode * re=head;
//    int cnt = 0;
//    while (re){
//        cnt++;
//        re=re->next;
//        if(cnt>10000)return true;
//    }
//    return false;

    // 双指针算法
    if(!head || !head->next)return false;
    ListNode * quick = head->next;
    ListNode * slow = head;

    while (quick&&slow){
        if(quick == slow)return  true;
        if(!quick->next || !quick->next->next)return false;
        quick = quick->next->next;
        slow = slow->next;
    }
    return false;
}
int main() {
    return 0;
}
